home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac-Source 1994 July
/
Mac-Source_July_1994.iso
/
C and C++
/
System
/
hyper-xcmd ƒ
/
TestTwo.c
< prev
Wrap
C/C++ Source or Header
|
1990-10-19
|
4KB
|
144 lines
/* Trivial XCMD to test out HyperXCmd_LSC.h
Nigel Perry (np@doc,ic.ac.uk), October 1990
*/
#include "HyperXCmd_LSC.h"
/* from LSC 2.01 supplement */
#define SetUpA4() asm \
{ move.l a4,-(sp) \
move.l a0,a4 \
}
#define RestoreA4() asm { move.l (sp)+,a4 }
#define NIL (void *)0
#define EMPTY ((StringPtr)0xA02) /* low memory global OneOne */
/* used for "\p" */
#define cEMPTY ((char *)0xA02) /* low memory global OneOne */
/* used for "" */
pascal void main(paramPtr) register XCmdPtr paramPtr;
{ Point pt;
Rect rect;
Str255 ans;
StringPtr inp;
WindowPtr wp;
XWEventInfoPtr xp;
GrafPtr gp;
SetUpA4();
if(paramPtr->paramCount == -1)
{ xp = (XWEventInfoPtr)(paramPtr->params[0]);
wp = xp->eventWindow;
switch(xp->event.what)
{ case updateEvt:
BeginUpdate(wp);
EndUpdate(wp);
break;
case xCursorWithin:
InitCursor();
break;
case xHidePalettesEvt:
ShowHide(wp, false);
break;
case xShowPalettesEvt:
ShowHide(wp, true);
break;
case mouseDown:
switch( FindWindow(xp->event.where, &wp) )
{ case inContent:
/* jump windoid to mouse click! */
MoveWindow(wp, xp->event.where.h, xp->event.where.v, false);
break;
case inGoAway:
if( TrackGoAway(wp, xp->event.where) )
CloseXWindow(paramPtr, wp);
break;
case inDrag:
/* have some fun… */
rect = wp->portRect;
GetPort(&gp);
SetPort(wp);
LocalToGlobal(&rect.top);
LocalToGlobal(&rect.bottom);
SetPort(gp);
InsetRect(&rect, -72, -72);
DragWindow(wp, xp->event.where, &rect);
break;
default:
paramPtr->passFlag = true;
}
break;
default:
paramPtr->passFlag = true;
break;
}
if(paramPtr->passFlag)
{ NumToStr(paramPtr, xp->event.what, ans);
ParamText(ans, EMPTY, EMPTY, EMPTY);
ShowHCAlert(paramPtr, errorDlgID, "\pEvent: ^0");
}
}
else
{ switch( ShowHCAlert(paramPtr, yesNoCancelDlgID, "\pFlash Palettes?") )
{ case 1:
HideHCPalettes(paramPtr);
ShowHCPalettes(paramPtr);
HideHCPalettes(paramPtr);
ShowHCPalettes(paramPtr);
break;
case 2:
SendHCMessage(paramPtr, "\pput Cancelled");
break;
case 3:
BeginXSound(paramPtr, NIL);
SysBeep(1);
SendHCMessage(paramPtr, "\pput \"Spoil\"");
SysBeep(1);
SendHCMessage(paramPtr, "\pput \" Sport!\" after msg");
SysBeep(1);
EndXSound(paramPtr);
break;
default:
SendHCMessage(paramPtr, "\pput \"Unexpected return value.\"");
break;
}
/* test new conversions */
inp = (StringPtr)"\p1,2,3,4";
StrToRect(paramPtr, inp, &rect);
RectToStr(paramPtr, &rect, ans);
ParamText(inp, ans, StringEqual(paramPtr, inp, ans) ? EMPTY : (StringPtr)"\pNot ", EMPTY);
ShowHCAlert(paramPtr, errorDlgID, "\pInput: ^0 Output: ^1 Result: ^2Equal");
inp = (StringPtr)"\p7,8";
StrToPoint(paramPtr, inp, &pt);
PointToStr(paramPtr, &pt, ans);
ParamText(inp, ans, StringEqual(paramPtr, inp, ans) ? EMPTY : (StringPtr)"\pNot ", EMPTY);
ShowHCAlert(paramPtr, errorDlgID, "\pInput: ^0 Output: ^1 Result: ^2Equal");
inp = (StringPtr)"\p30, 30, 100, 0100";
StrToRect(paramPtr, inp, &rect);
RectToStr(paramPtr, &rect, ans);
ParamText(inp, ans, StringEqual(paramPtr, inp, ans) ? EMPTY : (StringPtr)"\pNot ", EMPTY);
ShowHCAlert(paramPtr, errorDlgID, "\pInput: ^0 Output: ^1 Result: ^2Equal");
inp = (StringPtr)"\p 7, 008 ";
StrToPoint(paramPtr, inp, &pt);
PointToStr(paramPtr, &pt, ans);
ParamText(inp, ans, StringEqual(paramPtr, inp, ans) ? EMPTY : (StringPtr)"\pNot ", EMPTY);
ShowHCAlert(paramPtr, errorDlgID, "\pInput: ^0 Output: ^1 Result: ^2Equal");
/* now lets try for a windoid */
wp = NewXWindow(paramPtr, &rect, "\pA Windoid", true, palNoGrowProc, false, true);
NumToHex(paramPtr, (long)wp, 6, ans);
ParamText(ans, EMPTY, EMPTY, EMPTY);
ShowHCAlert(paramPtr, errorDlgID, "\pWindow Ptr = 0x^0");
}
RestoreA4();
}